関連付けが変わってしまった
A:(延さん)
確かにインストールすると勝手に関連付けを変えてしまう、行儀の悪いソフトが多いですね。とにかく面倒くさいことをせずに、簡単に関連付けを変えたい、戻したいといのであれば、こちら「簡易な関連付けの変更」にその方法を示しているので参照して下さい。
しかし上記のページで紹介している方法では、正しくインターネットエクスプローラに関連付けを戻せない上、今PhotoShopに関連付けられている情報を殺してしまいます。また今回の一郎兄さんのトラブルは、いろいろと重要な問題を含んでいるので、そんな簡易な([安易な]と言いたいくらい)方法でお茶を濁さないで、正面から関連付けについて取り組んでほしいのです。どうでしょうか?
Q:(一郎兄さん)
そういうことなら勿論頑張ってみるよ。
A:(延さん)
よかった。
それならばまず関連付けについてはこちら「関連付けについて」で詳しく説明しているので参照して下さい。これから話すことはここよ読んでないとチンプンカンプンなので必ずここを読んでからこのページに戻って下さいね。
Photoshopは拡張子jpgの関連付けを他のアプリケーションから奪うだけでなく、「関連付けについて」でも説明している名無しファイルタイプをつくって、それに関連付けをするので困りますね。奪われたインターネットエクスプローラの作ったファイルタイプはごみファイルタイプになってしまいます。
Q:(一郎兄さん)
ごみファイルタイプって何?
A:(延さん)
まあ私の造語なんですが。説明しましょう。
レジストリを見るとおびただしい数のファイルタイプがありますが、実は何の拡張子とも関連付けられていないものが非常に沢山存在するんです。
Q:(憲さん)
そんなファイルタイプ、存在意義があるんですか?
A:(延さん)
ところが特に「拡張子」と関連付けられなくても、それなりの働きができるファイルタイプが沢山あるのです。たとえば「folder」とか「drive」というファイルタイプは、システム的にフォルダやドライブと関連をもっていて、特に特定の「拡張子」と結びついているわけではありません。これらのファイルタイプを私は無関連ファイルタイプと呼んでいます。
問題は無関連ファイルタイプの中にはこうした特別の役割をもっている訳でもなく、拡張子との関係もなく、何もできないでいる、完全にレジストリの中で宙に浮いてしまっているファイルタイプが存在していることなんです。これが私がさっき言ったごみファイルタイプなんです。
なぜこのようなごみファイルタイプができてしまうかというと、複数のアプリケーション間で拡張子の奪い合いを起こすためです。JPEGファイルのように多くのアプリケーションが自分と関連付けたいと欲する人気拡張子がある場合にはよく起こることです。
具体的に言うと、あるアプリケーションをインストールすると、そのアプリケーションがある特定の拡張子を自分と関連付けようとします。この時、大抵はまず自分が関連付けられた独自のファイルタイプを作成します。その上でその新規ファイルタイプに目的の拡張子を関連付けます。もしこの拡張子が既に他のアプリケーションに関連付けられていた場合、当然あるファイルタイプがあり、それが関連付けられていたはずです。この時のこのファイルタイプの運命はどうなるのかというと、レジストリから削除される訳ではなく、ただその拡張子との関係が絶たれるだけです。こうしてレジストリの中で浮いてしまった「ごみファイルタイプ」となる訳です。
実は今回の一郎兄さんの場合も、このような場面なのです。PhotoShopが拡張子jpgとの関連をインターネットエクスプローラから奪ったのです。この現象を図示すると次のようになります。
拡張子JPG --> Aファイルタイプ --> インターネットエクスプローラ
とあったものが、
拡張子JPG --> 新規ファイルタイプ「PhotoShop.JPEGFile」 --> PhotoShop
????? --> Aファイルタイプ --> インターネットエクスプローラ
となって、Aファイルタイプは、ごみと化した訳です。
しかしごみとなったファイルタイプはレジストリ中に残っているので、探しだして復活させることができます。どのような名前のファイルタイプだったかを覚えていればいいのですが、普通はそんなもの覚えてないでしょう。まあこの場合は「iexplore.exe」か何かで検索するしかないです。
今回は種あかしをしましょう。実はインターネットエクスプローラに関連付けされたJPEGファイル用のファイルタイプはjpegfileです。レジストリで探してみましょう。
[レジストリエディタ図6 ごみファイルタイプ]
あったでしょ。ちゃんとインターネットエクスプローラに関連付けられています。しかし拡張子JPGとの関係が絶たれて、ごみとなっていた訳です。このファイルタイプに拡張子jpgを関連付け戻せば、復活する訳ですね。具体的には、「.jpg」キーの標準のデータを「PhotoShop.JPEGFile」から「jpegfile」に変更してしまうのです。
[レジストリエディタ図7 関連付けの復活]
これでめでたく拡張子jpgのファイルは、インターネットエクスプローラとの関連に戻りました。この作業はレジストリエディタでなければできません。しかし実際にレジストリエディタで書き換えたのは、たった一個所です。いとも簡単にごみになっていたファイルタイプを復活させることができました。
Q:(一郎兄さん)
でも今度はPhotoShopのファイルタイプ「PhotoShop.JPEGFile」がごみになってしまったね。
A:(延さん)
さすがお兄さん、いいとところに気が付きますね。その通りなんです。一つの拡張子を複数のファイルタイプに関連付けることはできません。ある拡張子に関連付けたいファイルタイプが複数あっても、一つを除いてごみ化は免れません。しかし事実上そのファイルタイプを生かすことはできます。ごみファイルタイプのリサイクルです。ごみ化してしまったファイルタイプから使える部品を取り出して、再利用します。使える部品とはアクションです。ごみファイルタイプからアクションだけを抽出して、生きているファイルタイプに追加していきます。まさしくごみのリサイクルですね。
ファイルタイプの最大の目的はアプリケーションとの関連付けです。それを具現化しているのはアクションですから、これだけでも利用されれば、半ば目標は達成されたことになります。
実際のファイルタイプへのアクションの追加する方法は「関連付けについて」で詳しく説明しているので、そちらを参照しながらやってみて下さい。
それが完了すれば、拡張子jpgのファイルはインターネットエクスプローラとフォトショップが双方関連付けられ、ごみとなったフォトショップのファイルタイプもうかばれます。
ところでアクションの追加といっても結局それはアプリケーション名を記述するだけでいいので、特にごみファイルタイプを探してきて、そのアクションを抽出する必要もないような気がすると思います。
しかしどうしても既存のごみファイルタイプからアクションを探してくる必要がある場合がいくつかあります。その一つは「DDE」が使われている場合です。「DDE」の説明は「DDEってなに?」をみてね。
これは既に関連アプリケーションが起動されていた場合、そのアプリケーションに指定ファイルを表示させるために行うのだけど、「DDEってなに?」でも説明しているように、ひとえにそのアプリケーションの仕様次第なので、我々が勝手に書くわけにはいかないって訳。
そこでそのアプリケーションのインストーラが作ったファイルタイプが必要になるんだ。ここにはアプリケーションの開発者がもしDDEを使うように作っていたら、その時に実装した通りのDDEメッセージやトピックが記述されているはずだからね。事実インターネットエクスプローラなどはDDEが使われているから、もしPhotoShopのインストーラによってインターネットエクスプローラのファイルタイプがごみ化していたら、探してこないと困るってことなんだ。
実は先ほど、「簡易な関連付けの変更」で紹介している方法(「簡易な方法」と呼びます)では、正しくインターネットエクスプローラの関連付けに戻せないと言ったのは、インターネットエクスプローラの関連付けには本来DDEの情報があるのですが、そんな情報までは「簡易な方法」では作ってくれないからなのです。
また「簡易な方法」では今の情報を殺してしまうとも言いました。これはこの方法が関連付けの変更を、既存のファイルタイプの「標準アクション」をすりかえるというやり方で実現しているため、すりかえられた元のアクションは完全にレジストリ上から消えてしまうのです。ごみファイルタイプは、たとえごみでもレジストリ上に残っていたため、リサイクルすることができました。しかしレジストリ上から完全に抹殺されてはどうにもならない訳です。勿論DDEの情報などが無かったのなら、大して問題はないのですが、DDEを使うアプリケーションは増えてきましたので注意が必要です。
更にDDE以上に厄介なのが、OLE情報です。
Q:(憲さん)
何ですかOLE情報って?
A:(延さん)
「Object Link and Embeded」の頭文字で、詳細はこちら(工事中)を参照して下さい。
たとえばビットマップファイル(拡張子bmp)をワードにドラッグアンドドロップすると画像として貼りつくのですが、これも一種のOLEなんです。レジストリ上OLE情報がどのように記述されているか見てみましょう。ビットマップファイルが関連付けられているのは、Paint.Pictureというファイルタイプです。
[レジストリエディタ図 Paint.Pictureファイルタイプ]
「CLSID」というキーの値に訳の分からない数字が並んでいるでしょ。
Q:(貴子)
まるで暗号のようね。
A:(延さん)
これをクラスIDといい、OLE情報のIDになります。実はHKEY_CLSSES_ROOTの下にCLSIDというキーがあってこの下のずらりとこのクラスIDキーが並んでいます。ここがOLE情報の倉庫のようなものです。
[レジストリエディタ図 CLSIDキー]
ここから上記のファイルタイプPaint.PictureのクラスIDを探してみます。
[レジストリエディタ図 Paint.PictureのCLSIDキー]
ありました。配下にいろんなキーがあります。これがビットマップファイルに関連付けられたOLE情報なんだ。レジストリ上のOLE記述はこのような構造になっています。
実はこれらのキーがどのような働きをしているのか、僕にも殆ど解らないんだよ。これもやはりDDE同様プログラミング次第なので、作者でなければ作りようのないデータなんだね。
解っているものをちょっと説明しましょう。たとえば「insertable」っていうキーがあるでしょ。これがないとビットマップファイルをワードにドラッグした時に画像としてではなく、パッケージオブジェクトとして貼り付いてしまうんだ。ワードで画像をよく扱う人には重要なことでしょうね。
とにかくこのような情報はアプリケーションの作者にしか解らないので、どうしてもごみ化したファイルタイプを探してくる必要性がこの場合もあるということです。
Q:(憲さん)
ファイルタイプはなるべくアプリケーションが作ったものを探してくるということはよく分かりました。しかしその見つけてきたファイルタイプからアクションをコピーするというのは具体的にどうやるのですか?
A:(延さん)
実はファイルタイプタブにもレジストリエディタにも、「コピー&ペースト(貼り付け)」みたいな操作方法は用意してくれてないんだ。だからコピーするとはいっても、だた記述を見て、その通りに書き移すだけだよ。
実は今回もインターネットエクスプローラのファイルタイプを残し、PhotoShopのファイルタイプをごみ化して、インターネットエクスプローラのファイルタイプの方に追加したのも、インターネットエクスプローラの方がクラスIDやDDEを使っていて、書き移すのが面倒だと思ったからなんだよ。このように比較的複雑なファイルタイプで、ごみ化せずに残したもの方を私は軸ファイルタイプと呼んでいます。
Q:(憲さん)
ちゃんと布石が打たれていたという訳ですね。
A:(延さん)
いままでの話しをまとめると、そもそもエンドユーザはあまりファイルタイプの作成などすべきでなく、やはりファイルタイプは基本的にアプリケーションが作成すべきです。前述のように我々には解らない様々なエキスがファイルタイプには詰まっており、それを詰めることができるのはアプリケーションの作者だけだからです。
ほとんどのファイルに関してはそれでいいはずなのです。しかし一部の人気拡張子ファイルの場合は、アプリケーション間で奪い合いが起こります。この時はじめてユーザが調停をする訳です。この調停作業がいままで説明してきたことであり、ファイルの関連付けに関してユーザが最も行うべきことであり、反面ユーザにしかできないことでもあります。
この調停の手順を整理してみましょう。
1.まず人気拡張子に対していろいろなアプリケーションがファイルタイプを作り関連付けます。
2.その拡張子に関する現存のファイルタイプやごみファイルタイプを探し出します。
3.その中からOLE情報をもっていたり、アクション等が複雑なファイルタイプを選び出し、軸ファイルタイプにします。
4.ごみファイルタイプから使えるアクションなどを抽出して、軸ファイルタイプに追加します。
もちろん小型のオンラインソフトなどで、そもそもインストールプログラムも無く、関連付けなど自動的に行わないアプリケーションもあるでしょう。そのようなアプリケーションを関連付けに加えたい場合は、普通にアクションを作成していけばいいだけです。
これが完了すると、当該拡張子に様々なアプリケーションが関連付けられ、とても便利になります。ファイルタイプのニックネークやアイコンなどは適宜自分の好みに変更してもいいでしょう。